package main

import "fmt"

// 如果类名首字母大写，表示其他包也能够访问
type Hero struct {
	// 如果说类的属性首字母大写，表示该属性是对外能够访问的，否则的话只能够类的内部访问
	Name  string
	Ad    int
	Level int
}

func (hero *Hero) show() {
	fmt.Println("Name = ", hero.Name)
	fmt.Println("Ad = ", hero.Ad)
	fmt.Println("Level = ", hero.Level)
}

func (hero *Hero) GetName() string {
	return hero.Name
}

func (hero *Hero) setName(newName string) {
	// hero 是调用该方法的对象的一个副本(拷贝)
	hero.Name = newName
}

func main() {
	// 创建一个对象
	hero := Hero{Name: "zhangsan", Ad: 100, Level: 1}

	hero.show()

	fmt.Println(hero.GetName())

	hero.setName("lisi")

	hero.show()
}
